
#include "nane/core/crt/FileSystem.h"
#include "nane/core/crt/Win32/Win32FileSystemImpl_.h"

#include <cassert>

namespace nane
{
    //////////////////////////////////////////////////////////////////////////
    bool FileSystem::Initialize()
    {
        assert( m_context );
        assert( m_context->fileSystem == NULL );
        nane::m_context->fileSystem = new Implementation();
        if( nane::m_context->fileSystem->Initialize() == false )
        {
            Shutdown();
        }
        return nane::m_context->fileSystem != NULL;
    }
    ////////////////////////////////////////////////////////////////////////////
    void FileSystem::Shutdown()
    {
        if( nane::m_context->fileSystem != NULL )
        {
            nane::m_context->fileSystem->Shutdown();
        }
        delete static_cast<Implementation*>(nane::m_context->fileSystem);
        nane::m_context->fileSystem = NULL;
        Holder<IFileSystem>::Clear();
    }
    //////////////////////////////////////////////////////////////////////////
}   // namespace nane
